package com.suning.sawp.intf.commodity;

import java.util.List;

import org.apache.poi.ss.usermodel.Sheet;

import com.suning.sawp.dto.commodity.MssAggregationPageDto;
import com.suning.sawp.dto.commodity.MssCategory;
import com.suning.sawp.dto.commodity.MssCommodityPageResponse;
import com.suning.sawp.dto.commodity.MssCommoditySelfDto;
import com.suning.sawp.po.commodity.MssAggregationPage;
import com.suning.sawp.po.commodity.MssCommoditySelf;

/**
 * 
 * 〈一句话功能简述〉<br> 
 * 〈功能详细描述〉
 *
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface MssCommoditySelfService {

    /**
     * 查询爆款,优选商品列表
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param currIndex
     * @param size
     * @param typeId
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MssCommoditySelfDto> getCommodityInfoList(int currIndex, int size, String typeId, String cateCode, String staffId, String storeCode);
    
    /**
     * 搜索商品信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param currIndex
     * @param size
     * @param typeId
     * @param cateCode
     * @param commCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MssCommodityPageResponse queryCommodityInfoListIn(int currIndex, int size, String typeId, String cateCode, String commCode);
    
    /**
     * 保存商品信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param commodity
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void save(MssCommoditySelf commodity);
    
    /**
     * 修改商品信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param commodity
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void update(MssCommoditySelf commodity);
    
    /**
     * 根据ID查询商品
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param id
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MssCommoditySelf getCommodityById(Long id);
    
    /**
     * 删除商品信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param id
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void delCommodityById(Long id);
    
    /**
     * 根据商品编码查询商品信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param commCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MssCommoditySelf getCommodityByCommCode(String commCode, String mertCode);
    
    /**
     * 保存聚合页
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param page
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void save(MssAggregationPage page);
    
    /**
     * 修改聚合页
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param page
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void update(MssAggregationPage page);
    
    /**
     * 查询聚合页
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MssAggregationPage getMssAggregationPage(String staffId);
    
    /**
     * 查询待维护聚合页
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MssAggregationPageDto getMssAggregationPageIn();
    
    /**
     * 查询优选,爆款的品类信息
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MssCategory> queryCateList();
    
    /**
     * 导入优选爆款商品池数据
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param sheet
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    String importCommodityFile(Sheet sheet);
    
}
